package com.cskaoyan.javase.oop2._1extends._6restriction;

/**
 * 继承的限制:
 * 思考以下问题:
 *      1.能不能继承父类的私有成员呢？
 *          是可以继承的
 *          但是由于权限问题,没有办法直接"对象名点"访问
 *          只能通过继承父类的getter方法间接访问
 *
 *      2.父类的构造器能不能继承?
 *          不能,构造器不是一般的方法,不参与继承,不能被继承
 *
 *
 *      3.父类的静态成员(方法/变量)能不能继承?
 *          不是继承
 *          使用子类类名点确实可以访问父类静态成员
 *          但只是共用了父类的静态成员,而不是继承
 *
 *          最终静态成员是属于类的,不管继承不继承
 *          都不会改变这个特点
 *          父类的静态成员虽然可以让子类通过类名点访问
 *          但终究还是父类的静态成员
 *          子类只是借用一下
 *          这不是继承
 *
 *          所以Java的继承,只考虑普通成员,不考虑静态成员
 *          静态成员也不是继承
 *
 * 使用继承,最重要的是考虑父子类的"is-a"关系
 * 如果两个类没有"is-a"关系,是不能使用继承的
 *
 * @since 17:33
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Son s = new Son();
        // System.out.println(s.num);
        Father f = new Father();
        // f.num
        System.out.println(s.getNum());
        System.out.println("-------------------");
        System.out.println(Person.salary);
        System.out.println(Star.salary);
        Person.salary = 2000;
        System.out.println(Star.salary);
        Star.salary = 3000;
        System.out.println(Person.salary);
    }
}

class Person {
    static double salary = 1000;
}

class Star extends Person {
}


class Father {
    private int num = 10;

    // getter方法是一个成员方法,会被子类继承
    public int getNum() {
        return num;
    }
}

class Son extends Father {
}